enumerate 与 zip
enumerate() 在遍历时同时获取索引和值,zip() 并行配对多个列表。
enumerate
tasks = ["编译", "测试", "打包"]
# 默认索引从 0 开始,业务编号从 1 开始时用 start=1
for index, task in enumerate(tasks, start=1):
print(f"任务 {index}: {task}")
# 任务 1: 编译
# 任务 2: 测试
# 任务 3: 打包
zip
statuses = ["success", "failed", "success"]
for task, status in zip(tasks, statuses):
print(f"{task}: {status}")
# 编译: success
# 测试: failed
# 打包: success
长度不同时,zip() 在较短的列表处截断,不报错;必须长度一致时可用 zip(..., strict=True)(Python 3.10+)。
enumerate 结合 zip
for index, (task, status) in enumerate(zip(tasks, statuses), start=1):
print(f"{index}. {task}: {status}")
# 1. 编译: success
# 2. 测试: failed
# 3. 打包: success
zip() 先把任务和状态配成一组,enumerate() 再给每组加上编号。
统计失败任务
failed_tasks = [
task
for task, status in zip(tasks, statuses)
if status == "failed"
]
print(failed_tasks) # ['测试']
如果任务与状态来自不同数据源,需确认顺序一致,否则状态可能配错任务。